package q190_reverseBits;

public class Solution_1 {
    /*
    算术右移 >> ：舍弃最低位，高位用符号位填补
    逻辑右移 >>> ：舍弃最低位，高位用 0 填补
    算数左移 << n: 类似于乘以 2 的 n 次方
     */
    public int reverseBits(int n) {
        int ans = 0;
        for (int i = 0; i < 32; i++) {
            // ans = ans | (n & 1) << (31 - i);
            // 这里必须使用几个操作
            // 1 ans 不能使用乘2
            // 2 不能用 + (n & 1) 要使用按位与
            ans = (ans << 1) | (n & 1);
            // n = n >> 1;
            n = n >>> 1;
        }
        // 直接使用reverse
        // return Integer.reverse(n);
        return ans;
    }
}
